﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.IO;
using System.Windows.Forms;
using DAL;
using Entities;

namespace BL
{
    public class VentasBLL
    {
        public static DataSet dt;
        public DataTable tblVentas;
        public DataTable tblVentasDetalle;

        public static DataSet CrearDataset()
        {
            string strFilePath = Application.StartupPath + "\\Datasets_xml\\";
            if (File.Exists(strFilePath + "Ventas.xml"))
            {
                dt = new DataSet();
                dt.ReadXml(strFilePath + "Ventas.xml");
                dt.AcceptChanges();
                return dt;
            }
            else
            {
                DataSet dt = DAL.VentasDAL.CrearDataset();
                dt.Tables[0].TableName = "Ventas";
                dt.Tables[1].TableName = "VentasDetalle";

                DataRelation ventasDetalle = dt.Relations.Add(
                    "VentasDetalle", dt.Tables["Ventas"].Columns["IdVentaVEN"],
                    dt.Tables["VentasDetalle"].Columns["IdVentaDVEN"]);
                ventasDetalle.Nested = true;
                dt.WriteXml(strFilePath + "Ventas.xml", XmlWriteMode.WriteSchema);
                return dt;
            }
        }

        public static DataSet CrearDatasetArqueo(string fechaDesde, string fechaHasta, int pc, ref int? codigoError)
        {
            try
            {
                string strFilePath = Application.StartupPath + "\\Datasets_xml\\";
                dt = DAL.VentasDAL.CrearDatasetArqueo(fechaDesde, fechaHasta, pc);
                dt.Tables[0].TableName = "Ventas";
                dt.Tables[1].TableName = "VentasDetalle";
                dt.Tables[4].TableName = "TesoreriaMovimientos";
                dt.Tables[1].Columns.Remove("IdPCVEN");
                dt.Tables[1].Columns.Remove("FechaVEN");

                DataRelation ventasDetalle = dt.Relations.Add(
                    "VentasDetalle", dt.Tables["Ventas"].Columns["IdVentaVEN"], dt.Tables["VentasDetalle"].Columns["IdVentaDVEN"]);
                ventasDetalle.Nested = true;
                dt.WriteXml(strFilePath + "Ventas.xml", XmlWriteMode.WriteSchema);
                dt.Tables[4].WriteXml(strFilePath + "TesoreriaMovimientos.xml", XmlWriteMode.WriteSchema);
            }
            catch (MySqlException ex)
            {
                if (ex.Number == 1042) //no se pudo abrir la conexion por falta de internet
                {
                    codigoError = 1042;
                }
                else
                {
                    codigoError = ex.Number;
                }
            }
            return dt;
        }

        public static DataSet CrearDatasetVentasPesos(int forma, string desde, string hasta, string locales, ref int? codigoError)
        {
            try
            {
                dt = DAL.VentasDAL.CrearDatasetVentasPesos(forma, desde, hasta, locales);
            }
            catch (MySqlException ex)
            {
                if (ex.Number == 1042) //no se pudo abrir la conexion por falta de internet
                {
                    codigoError = 1042;
                }
                else
                {
                    codigoError = ex.Number;
                }
            }
            return dt;
        }

        public static void InsertarDT(DataTable tabla, Ventas entidad)
        {
            DAL.VentasDAL.InsertarDT(tabla, entidad);
        }

        public static void EditarDT(DataRowView vistaFilaActual, Ventas entidad)
        {
            DAL.VentasDAL.EditarDT(vistaFilaActual, entidad);
        }

        public static void EditarDT(string idArticulo, Ventas entidad, DataTable tbl, DataSet dt)
        {
            DAL.VentasDAL.EditarDT(idArticulo, tbl, entidad, dt);
        }

        public static void GrabarDB(DataSet dt)
        {
            MySqlTransaction tr = null;
            try
            {
                MySqlConnection SqlConnection1 = DALBase.GetConnection();
                SqlConnection1.Open();
                tr = SqlConnection1.BeginTransaction();
             //   string strFilePath = Application.StartupPath + "\\Datasets_xml\\";
                string strFilePath = Application.StartupPath + "\\Datasets_xml\\";
                dt.WriteXml(strFilePath + "Ventas.xml", XmlWriteMode.WriteSchema);
                tr.Commit();
                SqlConnection1.Close();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.ToString(), "NcSoft", MessageBoxButtons.OK, MessageBoxIcon.Information);
                dt.RejectChanges();
                tr.Rollback();
            }
        }

        public static void BorrarByPK(int PK, ref int? codigoError)
        {
            try
            {
                DAL.VentasDAL.BorrarByPK(PK);
            }
            catch (MySqlException ex)
            {
                if (ex.Number == 1042) //no se pudo abrir la conexion por falta de internet
                {
                    codigoError = 1042;
                }
                else
                {
                    codigoError = ex.Number;
                }
            }            
        }

    }
}

